feat(benchmark): add append/pk table benchmark#302
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces an optional Google Benchmark-based performance suite for Paimon (append-table write/read and PK-table write/MOR read), along with CMake/third-party wiring to build and run the benchmarks via CTest labels.
Changes:
- Add a
PAIMON_BUILD_BENCHMARKSbuild option and a benchmark CTest label/target integration. - Vendor/resolve Google Benchmark as a dependency (bundled/system) and add a
FindbenchmarkAlt.cmakemodule. - Add a benchmark executable with custom CLI parsing and shared helper utilities + unit tests for CLI parsing.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| third_party/versions.txt | Adds Google Benchmark version metadata for bundled dependency download. |
| CMakeLists.txt | Adds PAIMON_BUILD_BENCHMARKS option + benchmark CTest target/labels and subdir wiring. |
| cmake_modules/ThirdpartyToolchain.cmake | Adds Benchmark dependency resolution and bundled build rule. |
| cmake_modules/FindbenchmarkAlt.cmake | Adds a “system” find module for Google Benchmark. |
| cmake_modules/DefineOptions.cmake | Adds PAIMON_BUILD_BENCHMARKS and Benchmark_SOURCE options. |
| cmake_modules/BuildUtils.cmake | Adds add_paimon_benchmark / add_benchmark_case helpers and CTest labeling. |
| benchmark/CMakeLists.txt | Defines benchmark executable target and CLI parsing unit test target. |
| benchmark/read_write_benchmark.cpp | Benchmark entrypoint with custom CLI parsing + Google Benchmark init/run. |
| benchmark/cli_option_parsing.h | Inline parsing helpers for custom benchmark CLI options. |
| benchmark/cli_option_parsing_test.cpp | GTest coverage for CLI parsing helpers. |
| benchmark/benchmark_suite.h | Declares benchmark runner functions and CLI helpers. |
| benchmark/benchmark_suite.cpp | Implements benchmark suite: table setup, write/commit, read iterations, caching, CLI handling. |
| benchmark/benchmark_helpers.h | Declares shared validation/skip and read-iteration helpers. |
| benchmark/benchmark_helpers.cpp | Implements validation/skip behavior and shared read-iteration runner. |
| benchmark/benchmark_case_write.cpp | Registers BM_Write benchmark. |
| benchmark/benchmark_case_read.cpp | Registers BM_Read benchmark variants. |
| benchmark/benchmark_case_pk_write.cpp | Registers BM_PK_Write benchmark. |
| benchmark/benchmark_case_mor_read.cpp | Registers BM_MOR_Read benchmark variants. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I found two issues in the current PR head:
The earlier checksum, |
Purpose
Linked issue: close #100
Add a Google Benchmark based performance suite covering:
Add a benchmark entrypoint and custom CLI parsing for:
Add benchmark helper utilities for:
Build integration updates:
Tests
UT:
Benchmark smoke:
IT:
API and Format
Documentation
Generative AI tooling
Generated-by: GitHub Copilot (GPT-5.3-Codex)